package com.coldworks.base.task;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import android.content.Context;
import android.os.Build;
import android.provider.Settings;
import android.telephony.TelephonyManager;

import com.coldworks.base.BaseThread;
import com.coldworks.base.manager.BaseNetworkManager;
import com.coldworks.base.util.BaseCONST;

/**
 * 程序启动时，收集以下信息,异步发送服务器： 目前： IMEI / deviceid / devicetype TODO 还可以有： 网络类型
 * tManager.getNetworkType 信号类型 tManager.getPhoneType wifi是否打开 ContentResolver
 * cv = EX05_24.this.getContentResolver();
 * android.provider.Settings.System.getString(cv,
 * android.provider.Settings.System.WIFI_ON);
 * 
 * @since 2012-03-23
 */
public class BaseConfReportTask extends BaseThread {
	private Context ctx;
	private String url;

	public BaseConfReportTask(Context context, String url) {
		this.ctx = context;
		this.url = url;
	}

	@Override
	public void run() {
		try {
			Thread.sleep(BaseCONST.TASK.CONF_REPORT_SECOND * 1000);
		} catch (InterruptedException e) {
			log.error("", e);
			return;
		}
		log.info("start reporting");
		this.umengConfig();
		this.localConfig();
	}

	private void localConfig() {
		TelephonyManager tManager = (TelephonyManager) ctx
				.getSystemService(Context.TELEPHONY_SERVICE);
		String deviceId = Settings.System.getString(ctx.getContentResolver(),
				Settings.System.ANDROID_ID);
		String IMEI = tManager.getDeviceId();
		String deviceType = Build.MODEL + " " + Build.VERSION.SDK + " "
				+ Build.VERSION.RELEASE;

		String strDeviceType = "unknown";
		try {
			strDeviceType = URLEncoder.encode(deviceType, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			log.error("", e);
		}

		String fullUrl = this.url + "?IMEI=" + IMEI + "&deviceid=" + deviceId
				+ "&devicetype=" + strDeviceType;

		BaseNetworkManager.getInstance().httpGET(ctx, fullUrl);
		log.info("done");
	}

	/**
	 * 配置友盟统计工具
	 */
	private void umengConfig() {
		try {
			// MobclickAgent.setAutoLocation(false); // 获取手机方位
			// MobclickAgent.setDebugMode(false); // 本地log级别
			// MobclickAgent.update(ctx); // 使用版本更新提醒
			// MobclickAgent.setUpdateOnlyWifi(true); // 只有当用户处于wifi环境时才提示版本更新
			// MobclickAgent.updateOnlineConfig(ctx); // 使用在线配置功能
			/*
			 * TODO 为了实时使用在线配置更新可以添加以下更新接口 import org.json.JSONObject; import
			 * com.mobclick.android.UmengOnlineConfigureListener;
			 * MobclickAgent.setOnlineConfigureListener(new
			 * UmengOnlineConfigureListener(){
			 * 
			 * @Override public void onDataReceived(JSONObject data) { //接受在线更新
			 * } });
			 */
			// 这个方式是使用上次接受在线更新时保存到本地的umeng配置，目前用来切换androidesk_host
			// String host = MobclickAgent.getConfigParams(
			// AndroideskActivity.this, "androidesk_host");
			// if (host != null && !host.equals("")) {
			// C.URL.HOST_MAIN = host;
			// }
		} catch (Exception e) {
			log.error("", e);
		}
		log.info("done");
	}

}
